以下是他們的自介
freeCodeCamp 是一個免費學習編程的開發者社區,涵蓋 Python、HTML、CSS、React、Vue、BootStrap、JSON 教程等,還有活躍的技術論壇和豐富的社區活動,在你學習編程和找工作時爲你提供建議和幫助。
不管你是前端,後端還是全端,尤其是自學者(aka沒有朋友)
都適用這網站,但目前我以前端為主。
https://www.freecodecamp.org/learn/front-end-development-libraries/
最近有空從頭檢視自己 coding 的基礎
這個系列會有我發現這個網站的小細節及 daily challenge
以 day-num 紀錄,但不會每天更新(也是練習寫文章)
直覺就是排序然後拿第二個對吧
但是有重複的數值呢?
本題重點在於
思考一下
.
.
.
.
.
.
去除重複值, Set 或 filter。
const uniqueArr = [...new Set(arr)];
const uniqueArr = arr.filter((val, idx) => arr.indexOf(val) === idx);
就可讀性及效能而言,我會選擇使用 Set
排序,sort() 或 迴圈
arr.sort() ---(x)
//必須告訴函式要小到大還是大到小
//升冪(從小到大)
arr.sort((a, b) => a - b);
//降冪(從大到小)
arr.sort((a, b) => b - a);
let max = -Infinity, second = -Infinity;
for (let num of arr) {
if (num > max) {
second = max;
max = num;
} else if (num < max && num > second) {
second = num;
}
}
return second;
arr[]
0,1,2,3,4
//第二個元素
arr[1]
方法 | 可讀性 | 效能 | 適合場景 |
---|---|---|---|
Set | 高 | O(n) | 推薦,資料大時最佳 |
filter | 中 | O(n²) | 資料小時 OK |
Set
是一個 建構函式(constructor),所以必須用 new 來建立實例。
"S" 是大寫喔!
const unique = new Set(arr); //unique 是物件
const uniqueArr = [...new Set(arr)]; // 用"..."展開後才是陣列
python 的寫法 在去除重複及排序 和 javaScript 略有差異
def second_largest(arr):
unique = list(set(arr)) # 去重複
unique.sort(reverse=True) # 降冪排序
return unique[1] # 取第二大
set(arr) → 去重
list() → 將 Set 轉回列表,方便排序
sort(reverse=True) → 由大到小排序 (js 不能這樣寫)
我是阿mo,洋蔥蕃茄煮一煮可以不用加麵...撐飽